/*
    多个Promise如何设置在最外层catch捕获错误
    在单个promise.then中,return 下个promise

    resolve、reject参数
    resolve想要预期结果
    reject请求失败的结果

    new Promise((resolve,reject)=>{

    }).then( function resolve(err)=>{
        // 捕获resolve结果
    },function reject(err)=>{
        // 捕获reject结果
    }).catch(err=>{
        // 错误结果
    })
*/

// let a1=function() {
//     return new Promise((resolve,reject)=>{
//         setTimeout(function(){
            
//             reject("a1a1a1a1");
//         },1000)
        
//      })
// }
// let a2=function() {
//     return new Promise((resolve,reject)=>{
//         resolve("a2a2a2a2");
//     })
// }
// a1().then(res=>{
//     console.log(111111)
//     return a2(res);
    
// }).then(res=>{
//     console.log("res1",res)
// }).catch(err=>{
//     console.log("res5",err)
// })

// let kfc = new Promise((resolve, reject) => {
//     console.log("肯德基厨房开始做饭");
//     resolve("我是肯德基，你的餐已经做好了");
//   });
//   let dad = kfc.then(msg => {
//     console.log(`收到肯德基消息: ${msg}`);
//     return {
//       then(resolve) {
//         setTimeout(() => {
//           resolve("孩子，我吃了两秒了，不辣，你可以吃了");
//         }, 2000);
//       }
//     };
//   });
//   let son = dad.then(msg => {
//     return new Promise((resolve, reject) => {
//       console.log(`收到爸爸消息: ${msg}`);
//       setTimeout(() => {
//         resolve("妈妈，我和向军爸爸吃完饭了");
//       }, 2000);
//     });
//   });
//   let ma = son.then(msg => {
//     console.log(`收到孩子消息: ${msg},事情结束`);
//   });


// new Promise((resolve,reject)=>{
//     resolve(
//         class{
//             static then(resolve,reject){
//                 setTimeout(()=>{
//                     resolve("解决状态")
//                 },2000)
//             }
//         }
//     )
// }).then(
//     v=>{
//         console.log(`fulfilled:${v}`);
//     },
//     v=>{
//         console.log(`rejected:${v}`)
//     }
// )


// new Promise((resolve, reject) => {
//     resolve();
//   })
//   .then(msg => {
//     throw new Error("这是then 抛出的错误");
//   })
//   .catch((err) => {
//     console.log("33",err);
//   });

// function timeout(times) {
//     return new Promise(resolve => {
//       setTimeout(resolve, times);
//     });
//   }
  
//   timeout(3000)
//     .then(() => {
//       console.log("3秒后执行");
//       return timeout(1000);
//     })
//     .then(() => {
//       console.log("执行上一步的promise后1秒执行");
//     });


// new Promise(resolve => {
//     resolve("后盾人");
//   })
//   .then(v => {
//     if (v != "houdunren.com") return Promise.reject(new Error("fail"));
//   })
//   .catch(error => {
//     console.log(error);
//   });

console.time("1111111")
const hdcms = new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("第一个Promise");
    },2000);
  });
  const houdunren = new Promise((resolve, reject) => {
    setTimeout(() => {
        reject("第二个异步");
    }, 1000);
  });
  const hd = Promise.all([hdcms, houdunren])
    .then(results => {
      console.log(results);
      console.timeEnd("1111111")
    })
    .catch(msg => {
      console.log(msg);
    });